草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

java - 双原始类型数据的意外行为

我想了解Javadouble类型如何将其值存储在Java的内存中。当我运行以下代码时,我得到了意外的输出:publicstaticvoidmain(String[]args){floata=1.5f;floatb=0.5f;doublec=1.5;doubled=0.5;floata1=1.4f;floatb1=0.5f;doublec1=1.4;doubled1=0.5;System.out.println("a-bis"+(a-b));System.out.println("c-dis"+(c-d));System.out.println("a1-b1is"+(a1-b1));Sy

java - 奇怪的 Groovy/Java 字符串比较行为

考虑以下脚本:defa=newHashSet()defstr1="str1"defstr2="str2"defb="$str1-$str2"defc="str1-str2"println"b:$b"println"c:$c"println"b.equals(c):"+(b.equals(c))println"b==c:"+(b==c)println"b.compareTo(c):"+(b.compareTo(c))a.add(b)println"a.contains(c):"+a.contains(c)当使用Groovy1.8和JDK1.6.0_14运行时有以下输出:b:str1-st

java - JSP 比较运算符行为

我想比较中的两种不同类型JSP的标记。基本上剩下一个是Number总是但正确的一个是字符串,如果该字符串可以解析为数字,我不会收到任何错误,但如果无法将字符串解析为Number我收到javax.el.ELException:CannotconvertNooftypeclassjava.lang.Stringtoclassjava.lang.Long.实际上:${1==""}//worksfine${1=="4"}//worksfine${1=="Yes"}//triggerstheException.但即使是第3次比较在以前版本的JSP中也能正常工作,但现在它会导致异常。具有==的行为

java - 将日期转换为 LocalDate 在公元 200 年左右返回奇怪的结果

将Date转换为LocalDate时,我得到的结果不一致,大约在200年左右。使用以下代码进行转换:privateLocalDatetoLocalDate(DatelocalDate){returnLocalDateTime.ofInstant(localDate.toInstant(),ZoneId.systemDefault()).toLocalDate();}我的ZoneId.systemDefault()是Africa/Harare,与测试中使用的CAT匹配。我运行的测试用例是SimpleDateFormatsimpleDateFormat=newSimpleDateForma

java - 有没有一种简单的方法可以在获得焦点时更改 Java/Swing 控件的行为?

对于我使用过的大多数GUI,当包含文本的控件获得焦点时,控件的全部内容都会被选中。这意味着如果您刚开始输入,就会完全替换之前的内容。示例:您有一个初始化为零的旋转控件。您切换到它并键入“1”控件中的值现在是1。使用Swing,这不会发生。控件中的文本未被选中,克拉出现在现有文本的一端或另一端。继续上面的例子:对于SwingJSpinner,当您使用Tab键切换到旋转控件时,克拉位于左侧。您键入“1”,控件中的值现在为10。这让我(和我的用户)难以为继,我想改变它。更重要的是,我想全局更改它,以便新行为适用于JTextField、JPasswordField、JFormattedText

java - JPA + Hibernate + EHCache,意外行为

我正在尝试将EHCache实现到我的工作原型(prototype)中,其中我有一个javax.persistence.Entity代表我的数据库中的一个表(MySQL、mysql-connector-java-5.1.20。jar),以XML格式提供给消费者。我面临的问题是Hibernate似乎仍在从数据库中检索数据,即使EHCache将查询结果存储在内存中。我正在使用EHCachemonitor查看内存中的项目计数,并在缓存过期之前直接在数据库上更改数据,以了解是否实际使用了缓存数据。我一直在寻找这个问题的复制但没有成功,所以也许我遗漏了一些东西(我刚刚进入Java世界)。我的文件p

java - 如果常量接口(interface)反模式是一种犯罪行为,那么 Swing 为什么要这样做呢?

我正在制作一个swing应用程序,并意识到我有几个类需要访问同一组常量。我无法让自己宣布其中一个是它们的主要持有者并将它们全部放在那里并让其他人引用它;我想,嘿,我会让它们都从某个共同的地方继承,但Java不做多重继承,但我可以在事物上放置无限接口(interface)。所以我想到了将它们全部转储到一个界面中(这是真的,我没有做任何研究就自然而然地想到了)。后来才知道这是异端。“事实上,它有一个名字:常量接口(interface)反模式”-asdiscussedhere(以及替代解决方案(我选择采用))。在我查看JDialog和JFrame的源代码之前,我对此一直很好,它们是这样读的:

Unity | 渡鸦避难所-6 | 有限状态机控制角色行为逻辑

1有限状态机简介有限状态机(英语:finite-statemachine,缩写:FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型在游戏开发中应用有限状态机,能够将复杂的行为逻辑分解为一组简单的状态和转换规则,每个状态都可以独立地处理其逻辑,使代码更加结构化和组织化。同时可以方便的添加新的状态和转换规则,以适应游戏的需求。而且避免了在每帧中检查所有可能的行为,只需要处理当前状态的逻辑Unity中的AnimatorController使用状态机来管理各种动画状态和它们之间的过渡。但角色处于不同的状态时,除了播放对应的动画外,也会执行相关的逻辑,使用状态机来控

Java TreeMap 自定义比较器奇怪的行为

我正在尝试创建一个带有排序键的Map,先按字母顺序排序,最后按数字排序。为此,我使用了带有自定义Comparator的TreeMap:publicstaticComparatorALPHA_THEN_NUMERIC_COMPARATOR=newComparator(){@Overridepublicintcompare(Stringfirst,Stringsecond){if(firstLetterIsDigit(first)){return1;}elseif(firstLetterIsDigit(second)){return-1;}returnfirst.compareTo(sec

java - 泛型 - 下限/上限通配符行为?

这个问题在这里已经有了答案:WhatisPECS(ProducerExtendsConsumerSuper)?(16个答案)关闭5年前。我正在尝试了解下限和上限通配符的行为。尝试编译以下代码时遇到问题。Collectionc=newArrayList();c.add(newObject());//Compiletimeerror为了弄清楚这个问题,我也简单地尝试了下界通配符。幸运或不幸的是,代码编译得很好,但造成了很多困惑。Collectionc=newArrayList();c.add(newObject());//Compilesfine有人可以向我解释一下这两个代码片段是如何工作